from docxtpl import DocxTemplate

# 课程数据（根据实际需求填写）
course_data = {
    "授课内容": "部署NFS服务端与客户端，配置共享目录实现多主机数据同步与访问控制",
    "教学目的":
        "知识目标：\n"
        "1. 理解NFS协议架构与服务端/客户端工作流程（85%学生能绘制数据交互时序图）\n"
        "2. 掌握exports文件语法与访问控制参数（90%学生能正确配置rw,ro,sync参数）\n\n"
        "技能目标：\n"
        "1. 能独立完成NFS服务端部署与共享目录配置（80%学生可完成防火墙规则配置）\n"
        "2. 会使用mount命令实现客户端自动挂载（75%学生能解决NFSv4版本兼容性问题）\n\n"
        "素质目标：\n"
        "1. 培养网络文件系统设计中的权限管理意识（通过错误配置案例强化安全意识）\n"
        "2. 形成标准化部署文档编写习惯（各组实训需提交带注释的配置记录）",
    "教学重点": "NFS服务端核心配置文件（/etc/exports）的语法规则与访问控制参数应用",
    "教学难点": "多用户场景下UID/GID映射与root_squash权限限制机制的理解",
    "教学内容1": "NFS协议原理与架构解析：RPC机制、版本差异、服务组件（nfsd/rpcbind）",
    "教学内容2": "服务端配置实战：安装nfs-utils包、创建共享目录、编写exports文件规则",
    "教学内容3": "客户端挂载与验证：mount命令参数详解、fstab自动挂载、showmount测试",
    "教学内容4": "高级权限控制：anonuid/anongid配置、防火墙策略、Kerberos认证集成",
    "教学过程设计":
        "【课程导入】\n"
        "   - 演示NAS多用户协同编辑文档场景，说明网络存储对分布式开发的价值（8分钟）\n"
        "   - 展示虚拟机集群架构图，抛出跨主机数据同步的工程需求（7分钟）\n\n"
        "【分层讲解】\n"
        "1. 动态演示NFSv4文件锁机制，对比NFS与Samba协议特性差异（15分钟）\n"
        "2. 逐行解析/etc/exports配置文件：192.168.1.0/24(rw,sync,no_subtree_check)（20分钟）\n"
        "3. 操作错误复现：显示未配置防火墙导致Connection refused的排查过程（10分钟）\n\n"
        "【实训演练】\n"
        "1. 分组完成服务端配置：创建/web_data共享目录，配置研发组(读写)/测试组(只读)权限\n"
        "2. 客户端操作：使用mount -t nfs挂载，验证不同用户写入权限\n"
        "3. 拓展任务：配置autofs实现按需挂载，设置10分钟超时自动卸载（25分钟）\n\n"
        "【故障排查】\n"
        "   - 模拟root用户权限限制问题，引导学生调整all_squash参数\n"
        "   - 分析rpcbind服务未启动导致的mount.nfs: Connection refused错误（15分钟）\n\n"
        "【总结测试】\n"
        "   - 随机抽查学生配置共享/tmp目录，要求设置研发部IP段只读权限\n"
        "   - 布置企业级NFS调优报告（含网络带宽计算与iostat监控方法）",
    "思政元素":
        "1. 通过华为OceanStor分布式存储案例，强调核心技术自主可控的重要性\n"
        "2. 结合数据泄露案例，培养学生在共享资源配置中的网络安全责任感",
    "实践":
        "【实训项目】\n"
        "   - 搭建双节点NFS集群：Server端配置/home/share目录同步\n"
        "   - 设置市场部(10.10.1.0/24)可读写，财务部(10.10.2.5)只读\n"
        "   - 编写Shell脚本实现每日00:00自动备份共享目录到本地存储",
    "思考题":
        "1. 当客户端与服务端UID不一致时，如何保证文件属主正确映射？\n"
        "2. 如何用NFSv4 ACL实现user01对/logs目录仅周一到周五有写入权限？\n"
        "3. 跨操作系统（Linux->Windows）NFS共享需要特别注意哪些配置细节？"
}
# 加载模板文件
doc = DocxTemplate("教案-测试.docx")  # 请替换为实际模板路径

# 渲染模板
doc.render(course_data)

# 保存生成文件
doc.save("generated_course_plan.docx")